스크립팅 언어
1. 개요
1. 개요
스크립팅 언어는 수동으로 수행하는 프로세스를 자동화하는 데 사용되는 프로그래밍 언어이다. 이 언어로 작성된 짧은 명령어 집합을 스크립트라고 하며, 스크립트를 작성하는 행위를 스크립팅이라고 한다. 원래 스크립팅은 운영체제의 셸 자동화에 국한되어 비교적 단순한 언어로 이루어졌으나, 오늘날에는 응용 소프트웨어 개발에도 널리 활용되는 등 그 범위가 크게 확장되었다.
스크립팅 언어는 범용 프로그래밍 언어일 수도 있고, 특정 환경을 위한 도메인 특화 언어일 수도 있다. 응용 프로그램에 내장되어 그 기능을 확장하는 용도로 사용될 때는 확장 언어라고 불리기도 한다. 일반적으로 스크립트는 단일 파일에 포함되며, 그 크기는 수천 줄을 넘지 않는 경우가 많다.
주요 용도는 운영체제 셸 자동화와 응용 소프트웨어 개발이다. 언어의 유형은 범용 프로그래밍 언어, 도메인 특화 언어, 확장 언어, 제어 언어 등으로 구분된다. 대표적인 특성으로는 인터프리터 방식으로 실행된다는 점, 문법이 짧고 단순하다는 점, 반복적인 작업을 자동화한다는 점, 기능이 제한적일 수 있다는 점, 코드의 상단부터 실행이 시작된다는 점, 그리고 주로 단일 사용자가 작성하고 사용한다는 점 등을 들 수 있다.
2. 주목할 만한 언어
2. 주목할 만한 언어
주목할 만한 스크립팅 언어는 그 용도와 역사에 따라 매우 다양하다. 초기에는 운영체제의 셸 자동화를 위한 단순한 언어들이 주를 이루었으나, 점차 복잡한 응용 소프트웨어 개발까지 가능한 범용 언어로 발전하는 경우도 많다.
유닉스 및 리눅스 환경에서는 본 셸과 그 후계자인 배시가 전통적인 셸 스크립팅 언어로 널리 사용된다. AWK와 sed는 텍스트 처리와 변환 작업에 특화된 강력한 도메인 특화 언어의 대표적인 예이다. 펄은 본래 텍스트 처리와 시스템 관리 자동화를 위한 글루 언어로 시작했으나, 이후 범용 프로그래밍 언어로 성장했다.
파이썬과 루비는 가독성 높은 문법과 풍부한 라이브러리를 바탕으로, 시스템 스크립팅부터 웹 개발, 데이터 과학에 이르기까지 광범위한 분야에서 사용되는 범용 스크립팅 언어이다. Tcl은 응용 프로그램에 내장되기 쉬운 확장 언어로 설계되었으며, Tk 도구 모음과 결합하여 GUI 응용 프로그램 개발에도 활용된다.
마이크로소프트 윈도우 환경에서는 배치 파일 언어와 VB스크립트가 오랫동안 시스템 자동화의 중심이었다. 이후 등장한 파워셸은 닷넷 프레임워크와의 강력한 통합을 통해 보다 현대적이고 강력한 스크립팅 환경을 제공한다. 자바스크립트는 웹 브라우저 내에서 웹 페이지를 동적으로 제어하기 위해 탄생했으며, Node.js의 등장으로 서버 측 프로그래밍까지 영역을 확장하며 가장 보편적인 스크립팅 언어 중 하나가 되었다.
3. 특성
3. 특성
3.1. 인터프리트됨
3.1. 인터프리트됨
스크립트 언어의 가장 두드러지는 특성 중 하나는 일반적으로 인터프리터 방식으로 실행된다는 점이다. 이는 컴파일 언어와 대비되는 특징으로, 소스 코드를 기계어로 미리 변환하는 컴파일 과정을 거치지 않고, 실행 시점에 코드를 한 줄씩 해석하며 즉시 수행한다. 이러한 실행 방식 덕분에 스크립트를 작성하고 테스트하는 사이클이 매우 짧고 유연하다. 사용자는 텍스트 편집기로 코드를 수정한 후 별도의 빌드 과정 없이 바로 실행하여 결과를 확인할 수 있다.
인터프리트되는 언어의 실행 방식은 다양하다. 가장 기본적으로는 소스 코드를 직접 해석하는 방식이 있으며, 파이썬이나 루비와 같은 언어는 중간 형태인 바이트코드로 변환한 후 이를 인터프리트하는 방식을 사용하기도 한다. 또한 자바스크립트의 V8 엔진과 같이 JIT 컴파일 기술을 도입하여 인터프리트의 단점인 상대적 느린 실행 속도를 개선하는 경우도 흔하다.
이러한 인터프리트 특성은 스크립팅의 본래 목적인 빠른 자동화와 프로토타이핑에 매우 적합하다. 시스템 관리자가 셸 스크립트를 작성해 복잡한 명령어 세트를 자동으로 실행하거나, 개발자가 애플리케이션의 특정 기능을 빠르게 구현해 보는 데 유용하다. 따라서 스크립트 언어는 프로그래밍 언어의 한 범주로서, 컴파일 언어와는 구별되는 독자적인 장점과 사용 영역을 가지고 있다.
3.2. 짧고 단순함
3.2. 짧고 단순함
스크립팅 언어로 작성된 프로그램은 일반적으로 크기가 작고 구조가 단순하다는 특징을 지닌다. 이러한 프로그램은 대개 단일 파일에 포함되며, 코드의 길이는 수천 줄을 넘지 않는 경우가 많다. 이는 스크립트의 주요 목적이 복잡한 응용 프로그램을 처음부터 구축하는 것이 아니라, 기존의 시스템 프로그램이나 소프트웨어 컴포넌트를 빠르게 연결하거나 특정 작업을 자동화하는 데 있기 때문이다. 따라서 루아나 펄과 같은 언어는 복잡한 알고리즘이나 정교한 사용자 인터페이스를 구현하기보다는 글루 코드로서의 역할에 더 적합한 경향이 있다.
스크립트의 단순성은 실행 방식에서도 드러난다. 대부분의 스크립팅 언어는 인터프리터 방식으로 동작하며, 별도의 컴파일 과정 없이 소스 코드를 직접 실행한다. 이는 개발과 수정 사이클을 매우 빠르게 만들어 준다. 또한, 코드 실행은 엔트리 포인트가 아닌 파일의 첫 번째 줄에서 시작하는 것이 일반적이다. 이는 파이썬 스크립트가 main 함수 없이도 즉시 실행될 수 있는 것과 같은 특징으로, 학습 곡선을 낮추고 빠른 프로토타이핑을 가능하게 한다.
이러한 짧고 단순한 특성 덕분에 스크립팅 언어는 시스템 관리 자동화, 웹 개발에서의 서버 사이드 로직, 또는 컴퓨터 게임 내에서의 동작 제어와 같은 다양한 분야에서 널리 사용된다. 사용자는 복잡한 컴파일러나 통합 개발 환경 없이도 간단한 텍스트 편집기만으로 작업을 자동화하는 효율적인 도구를 만들 수 있다.
3.3. 자동화
3.3. 자동화
스크립팅 언어의 핵심 목적 중 하나는 반복적이고 수동적인 작업을 자동화하는 것이다. 이는 운영체제 셸에서 파일 관리, 배치 처리, 시스템 관리 작업을 자동화하는 것에서 시작되었다. 예를 들어, 유닉스 계열 시스템의 셸 스크립트나 마이크로소프트 윈도우의 배치 파일은 사용자가 명령줄에서 직접 입력해야 하는 일련의 명령어들을 스크립트 파일에 저장해 한 번에 실행함으로써 작업 효율성을 극대화한다.
자동화의 범위는 단순한 시스템 작업을 넘어 복잡한 워크플로 관리, 데이터 처리, 테스트 자동화, 웹 스크래핑 등 다양한 분야로 확장되었다. 파이썬, 펄, 루비와 같은 언어는 강력한 텍스트 처리 능력과 풍부한 라이브러리를 바탕으로 로그 분석, 보고서 생성, 데이터 마이그레이션과 같은 업무를 자동화하는 데 널리 사용된다. 특히 데브옵스 환경에서는 CI/CD 파이프라인 구축 및 관리에 스크립팅이 필수적이다.
응용 소프트웨어의 동작을 제어하는 자동화도 중요한 영역이다. 매크로 기록 기능을 제공하는 많은 소프트웨어는 내장 스크립팅 언어를 통해 사용자 작업을 자동화한다. 대표적으로 마이크로소프트 오피스 제품군의 비주얼 베이직 포 애플리케이션은 문서 처리나 스프레드시트 계산을 자동화하는 데 사용된다. 또한 GUI 스크립팅 도구들은 사용자의 마우스 클릭이나 키보드 입력을 시뮬레이션하여 그래픽 인터페이스를 통한 작업 흐름을 자동으로 수행하게 한다.
이러한 자동화는 인간의 개입을 최소화함으로써 오류를 줄이고, 처리 속도를 높이며, 재현 가능한 결과를 보장한다는 점에서 큰 가치를 지닌다. 스크립팅 언어가 비교적 배우기 쉽고 빠르게 작성할 수 있는 특성은 작은 규모의 자동화 작업을 신속하게 구현하고 수정할 수 있게 해주어, 생산성 향상에 기여한다.
3.4. 제한된 언어
3.4. 제한된 언어
스크립팅 언어는 종종 특정 작업을 자동화하거나 응용 프로그램을 확장하는 데 특화되어 있으며, 이로 인해 범용 프로그래밍 언어에 비해 기능이 제한되는 경우가 많다. 이러한 제한은 언어 설계의 의도적인 선택으로, 빠른 개발과 쉬운 학습을 가능하게 한다. 예를 들어, 자바스크립트는 초기에는 웹 페이지 내에서 제한된 상호작용을 처리하는 데 주로 사용되었고, 배치 파일은 운영체제의 기본적인 작업 자동화에 그쳤다.
주로 스크립팅을 위해 설계된 언어들은 복잡한 메모리 관리나 하드웨어 제어와 같은 저수준 작업을 직접 처리하는 기능을 제공하지 않는 경우가 많다. 대신 인터프리터나 호스트 응용 프로그램이 이러한 복잡성을 대신 처리한다. 루아나 Tcl과 같은 언어는 강력한 확장 언어이지만, 대규모 독립 실행형 소프트웨어를 구축하기보다는 다른 시스템에 내장되어 그 기능을 제어하는 데 더 적합하다.
이러한 '제한된 언어'의 특성은 단점이 아니라 목적에 부합하는 장점이다. 사용자는 복잡한 컴파일 과정 없이도 짧은 코드로 특정 작업을 빠르게 해결할 수 있다. AWK나 sed 같은 도메인 특화 언어는 텍스트 처리라는 한정된 영역에서 매우 강력한 성능을 발휘한다. 결국 스크립팅 언어의 제한성은 사용성을 높이고 특정 문제 영역에 대한 빠른 접근을 가능하게 하는 핵심 설계 철학의 일부이다.
3.5. 상단에서 시작
3.5. 상단에서 시작
스크립팅 언어의 코드는 일반적으로 응용 프로그램과 달리 특별한 진입점(entry point) 없이 코드의 첫 줄부터 순차적으로 실행을 시작한다. 이는 스크립트가 주로 간단한 작업을 자동화하는 데 사용되며, 복잡한 프로그램 구조를 필요로 하지 않기 때문이다. 예를 들어, 파이썬으로 작성된 스크립트는 main 함수나 클래스 정의 없이도 파일의 최상단에 있는 명령부터 즉시 실행된다.
이러한 '상단에서 시작'하는 특성은 스크립트를 빠르게 작성하고 테스트하는 데 유리하다. 사용자는 컴파일 과정 없이 인터프리터를 통해 소스 코드를 직접 실행할 수 있으며, 논리의 흐름이 위에서 아래로 직관적으로 이어진다. 이는 셸 스크립트나 자동화 작업용 스크립트에서 두드러진다.
반면, 자바나 C++ 같은 컴파일 언어로 작성된 전통적인 응용 프로그램은 main 메서드나 WinMain 함수와 같이 미리 정의된 진입점에서 실행이 시작된다. 이는 프로그램의 초기화 과정과 모듈 간의 복잡한 의존 관계를 관리하기 위한 구조적 접근 방식이다. 스크립팅 언어는 이러한 형식적 요구 사항이 적거나 없어, 보다 신속한 프로토타이핑과 간결한 코드 작성이 가능하다.
3.6. 단일 사용자
3.6. 단일 사용자
스크립팅 언어는 종종 단일 사용자에 의해 작성되고 관리된다는 특징을 지닌다. 이는 스크립트가 주로 특정 개인의 필요에 맞춰 개발되어, 그 사람이 직접 실행하거나 수정하는 경우가 많기 때문이다. 예를 들어, 시스템 관리자가 자신의 업무를 자동화하기 위해 작성한 셸 스크립트나, 개발자가 빌드 과정을 간소화하기 위해 만든 배치 파일이 이에 해당한다. 이러한 스크립트는 일반적으로 공개적으로 배포되는 대규모 응용 소프트웨어와는 달리, 작성자의 로컬 환경이나 특정 작업에 밀접하게 맞춰져 있다.
그러나 모든 스크립트가 단일 사용자에 국한되는 것은 아니다. 특히 게임 개발 분야에서는 루아나 파이썬 같은 스크립팅 언어로 게임 로직의 상당 부분을 작성하여 최종 사용자에게 배포하는 경우가 흔하다. 대표적인 예로 구글 크롬의 오프라인 게임인 티렉스 게임이 있으며, 많은 MMORPG들도 사용자 인터페이스 확장이나 매크로 작성에 스크립팅 언어를 제공한다. 이 경우 스크립트는 다수의 최종 사용자가 활용하게 된다.
이러한 '단일 사용자' 특성은 스크립트의 간결성과 직접 실행 가능한 특성에서 기인한다. 스크립트는 복잡한 컴파일 과정 없이 빠르게 작성하고 수정할 수 있어, 개인이 즉각적인 문제 해결이나 작업 자동화를 위해 사용하기에 이상적이다. 결과적으로 스크립팅 언어는 강력한 자동화 도구이면서도, 때로는 제품의 핵심 구성 요소로 발전하기도 하는 유연성을 보여준다.
4. 역사
4. 역사
스크립팅 언어의 역사는 운영체제의 셸 자동화에서 시작된다. 초기 메인프레임 시스템은 비대화형 일괄 처리를 사용했으며, 이를 제어하기 위해 IBM의 작업 제어 언어(JCL) 같은 언어가 사용되었다. 1960년대에 시분할 시스템이 등장하면서 대화형 셸이 개발되었고, 사용자는 셸 내에서 프로그램을 제어하는 셸 스크립트를 작성할 수 있게 되었다. 이 시기에 루이 푸진은 CTSS용으로 RUNCOM이라는 초기 명령 스크립트 처리기를 작성했으며, 멀틱스 시스템에도 유사한 도구가 포함되었다.
1970년대와 1980년대에 유닉스 환경이 보급되면서 AWK, 셸(sh, 배시), 셸 등의 강력한 텍스트 처리 및 시스템 자동화 도구가 등장했다. 1980년대 후반에는 펄이 텍스트 처리와 시스템 관리 작업을 위한 글루 언어로 개발되어 큰 인기를 끌었다. 1990년대에는 Tcl, 파이썬, 루비와 같이 응용 프로그램에 내장되거나 범용 프로그래밍으로도 사용될 수 있는 보다 현대적인 스크립팅 언어들이 등장하기 시작했다.
1995년에는 넷스케이프의 브라우저에서 자바스크립트가 도입되어 웹 페이지의 동적 동작을 제어하는 클라이언트 측 스크립팅 언어의 시대를 열었다. 한편, 마이크로소프트는 윈도우 환경을 위해 VB스크립트와 배치 파일을, 이후에는 파워셸을 발전시켰다. 2000년대 이후로 스크립팅 언어의 경계는 모호해졌으며, 파이썬과 자바스크립트(ECMA스크립트)와 같은 언어는 웹 서버 백엔드, 데이터 과학, 인공지능 등 광범위한 응용 소프트웨어 개발 분야에서 핵심적인 범용 언어로 자리 잡게 되었다.
5. 유형
5. 유형
5.1. 글루 언어
5.1. 글루 언어
글루 언어는 기존의 소프트웨어 컴포넌트나 시스템 프로그램들을 서로 연결하고 조율하는 데 특화된 스크립팅 언어의 한 유형이다. 이는 존 오스터하우트가 제시한 '대규모 프로그래밍'과 '소규모 프로그래밍'의 이분법에서, 시스템 프로그래밍과 대비되는 개념으로, 복잡한 응용 프로그램을 처음부터 새로 만드는 대신 이미 존재하는 모듈들을 효율적으로 결합하는 '접착제' 역할을 한다. 대표적인 예로 유닉스 계열 시스템에서 파이프라인을 구성하거나 여러 명령어를 조합하는 셸 스크립트가 있으며, 펄도 원래 이러한 글루 코드 작성 목적으로 개발되었다.
웹 개발 분야에서 PHP나 파이썬과 같은 언어는 데이터베이스 서버, 웹 서버, 그리고 프론트엔드 코드 사이에서 데이터를 주고받고 로직을 처리하는 글루 언어 역할을 수행한다. 또한 애플스크립트나 VB스크립트와 같은 매크로 언어는 운영체제나 응용 소프트웨어의 기능을 자동화하고 제어하는 데 사용된다. 이러한 언어들은 복잡한 컴파일 과정 없이 비교적 간단한 스크립트를 통해 다양한 도구와 애플리케이션 간의 상호작용을 가능하게 한다.
글루 언어는 주로 빠른 프로토타이핑, 자동화된 배치 작업 처리, 그리고 여러 독립적인 프로그램을 하나의 워크플로우로 통합하는 데 유용하다. 예를 들어, 루아는 많은 컴퓨터 게임 엔진에 내장되어 게임 로직을 제어하는 데 쓰이며, Tcl이나 REXX도 다양한 플랫폼에서 확장 및 통합 언어로 활용된다. 이처럼 글루 언어는 복잡한 시스템을 구성하는 개별 요소들을 유연하게 결합함으로써 개발 효율성을 크게 높인다.
5.2. 편집기 언어
5.2. 편집기 언어
편집기 언어는 텍스트 편집기나 워드 프로세서와 같은 응용 프로그램 내에서 문서 편집 작업을 자동화하기 위해 설계된 스크립팅 언어의 한 유형이다. 이 언어들은 주로 매크로 형태로 사용되며, 반복적인 편집 작업을 자동화하거나 편집기의 기능을 확장하는 데 사용된다. 예를 들어, Vim의 Vim script나 GNU Emacs의 Emacs Lisp이 대표적인 편집기 언어에 속한다.
이러한 언어들은 특정 편집기 환경에 깊이 통합되어 있어, 문서 검색, 텍스트 치환, 문서 포맷팅 등과 같은 작업을 스크립트로 제어할 수 있다. 일부 강력한 편집기 언어는 단순한 자동화를 넘어 이메일 클라이언트, 파일 관리자, 심지어 간단한 게임과 같은 완전한 새로운 응용 프로그램을 편집기 내부에서 구축하는 데까지 사용되기도 한다.
편집기 언어의 구현 방식은 다양하다. SemWare Editor나 KEDIT처럼 자체적으로 개발된 전용 매크로 언어를 사용하는 경우도 있고, XEDIT처럼 외부 언어 인터프리터를 호출하는 방식도 있다. 또한, 리습 계열의 언어나 루아와 같은 범용 스크립팅 언어를 편집기에 내장하여 확장 언어로 활용하는 접근법도 널리 사용된다. 이는 응용 프로그램 개발자가 언어 번역기를 처음부터 만들 필요가 없게 해주며, 사용자가 이미 익숙한 프로그래밍 기술을 새로운 환경에서도 적용할 수 있게 한다.
5.3. 작업 제어 언어 및 셸
5.3. 작업 제어 언어 및 셸
작업 제어 언어 및 셸은 운영체제의 기본 기능과 시스템 프로그램의 실행을 자동화하고 제어하는 데 특화된 스크립팅 언어의 한 유형이다. 이들의 기원은 초기 메인프레임 시스템에서 일괄 처리 작업을 관리하기 위해 사용된 작업 제어 언어(JCL)와 같은 언어로 거슬러 올라간다. 현대의 유닉스 셸이나 MS-DOS의 COMMAND.COM과 같은 명령줄 인터프리터는 이러한 전통을 이어받아, 사용자가 명령어를 입력하고 스크립트를 실행하여 복잡한 작업 순서를 자동화할 수 있게 해준다.
이러한 언어의 주요 목적은 시스템 관리 작업을 자동화하는 것이다. 예를 들어, 파일 백업, 소프트웨어 설치, 시스템 모니터링, 로그 파일 분석 등 반복적이고 시간이 많이 소요되는 작업들을 스크립트로 작성하여 한 번의 실행으로 처리할 수 있다. 배치 파일(.bat), bash 스크립트(.sh), 파워셸(.ps1) 스크립트 등이 대표적인 예시이며, 이들은 운영체제의 핵심 기능과 깊이 연동되어 있다.
작업 제어 언어는 일반적으로 다른 응용 프로그램이나 시스템 유틸리티를 글루처럼 연결하는 글루 언어의 역할을 수행한다. 파이프라인(|)과 리디렉션(>, <) 같은 기능을 통해 여러 명령어의 입력과 출력을 연결하여 데이터 흐름을 처리하는 강력한 방법을 제공한다. 이는 복잡한 데이터 처리 작업을 간단한 명령어들의 조합으로 해결할 수 있게 한다.
애플스크립트와 같이 영어 문장과 유사한 구문을 사용하는 언어도 이 범주에 속할 수 있으며, 특히 macOS 환경에서 응용 프로그램을 제어하고 작업을 자동화하는 데 널리 사용된다. 이러한 언어들은 시스템 수준의 자동화부터 간단한 파일 관리에 이르기까지, 운영체제와의 직접적인 상호작용을 통해 컴퓨터 사용의 효율성을 극대화하는 도구로 자리 잡았다.
5.4. GUI 스크립팅
5.4. GUI 스크립팅
GUI 스크립팅은 그래픽 사용자 인터페이스 환경에서 사용자의 동작을 자동화하기 위한 스크립팅 언어의 한 유형이다. 이는 명령줄 기반의 셸 스크립트와 대비되며, 마우스 클릭, 키보드 입력, 창 이동 등 사용자가 GUI를 통해 수동으로 수행하는 일련의 작업을 시뮬레이션한다. 이러한 언어로 작성된 프로그램은 종종 매크로라고도 불린다.
GUI 스크립팅 언어는 운영체제나 응용 프로그램이 제공하는 특정 인터페이스나 API를 통해 그래픽 요소를 제어한다. 따라서 특정 운영체제나 소프트웨어에 대한 지원이 필요하며, 이는 사용 범위를 제한하는 요인이 된다. 그러나 일부 도구는 화면의 픽셀을 분석하여 그래픽 객체를 인식하는 방식으로 작동하기도 하여, 특별한 지원 없이도 다양한 응용 프로그램을 자동화할 수 있다.
주요 용도는 반복적인 GUI 작업의 자동화, 소프트웨어 테스트 자동화, 사용자 워크플로 간소화 등이다. 예를 들어, 데이터 입력, 리포트 생성, 또는 여러 응용 소프트웨어 간의 데이터 전송 과정을 자동화하는 데 활용된다. IBM의 오브젝트 REXX와 같이 일반적인 스크립팅 언어가 GUI 조작 기능을 제공하는 경우도 있다.
5.5. 응용 프로그램별 언어
5.5. 응용 프로그램별 언어
응용 프로그램별 언어는 특정 소프트웨어나 플랫폼 내에서 그 기능을 확장하거나 제어하기 위해 설계된 도메인 특화 언어이다. 이러한 언어는 해당 응용 프로그램의 고유한 객체 모델이나 API에 깊이 통합되어, 사용자가 소프트웨어의 핵심 기능을 자동화하거나 새로운 기능을 추가할 수 있게 해준다. 대표적인 예로는 마이크로소프트 오피스 제품군에서 매크로와 사용자 정의 함수를 작성하는 데 사용되는 비주얼 베이직 포 애플리케이션(VBA), 또는 어도비 제품들에서 사용되는 포스트스크립트와 액션스크립트를 들 수 있다.
이러한 언어는 주로 해당 응용 프로그램의 사용자나 관리자를 대상으로 하며, 복잡한 컴파일 과정 없이도 비교적 쉽게 스크립트를 작성하고 실행할 수 있도록 한다. 예를 들어, 이맥스 텍스트 편집기는 이맥스 리스프(Emacs Lisp)라는 자체 스크립팅 언어를 통해 사용자가 편집기의 거의 모든 측면을 프로그래밍 방식으로 제어할 수 있게 한다. 마찬가지로, 많은 컴퓨터 게임이나 시뮬레이션 소프트웨어(예: 트레인즈의 TrainzScript, 세컨드 라이프의 린든 스크립트 언어)는 게임 내 객체의 행동을 정의하거나 새로운 콘텐츠를 생성하기 위한 전용 스크립팅 언어를 제공한다.
응용 프로그램별 언어의 주요 장점은 호스트 응용 프로그램의 내부 구조와 데이터에 직접 접근할 수 있어 높은 수준의 통합과 효율성을 제공한다는 점이다. 그러나 이는 동시에 단점이 되기도 하는데, 해당 언어로 작성된 스크립트는 특정 소프트웨어에 종속되어 다른 환경으로의 이식성이 매우 제한적이다. 이러한 언어들은 종종 범용 프로그래밍 언어의 일부 기능을 단순화하거나 특정 도메인에 최적화된 형태로 제공하여, 전문 프로그래머가 아닌 최종 사용자도 업무 자동화를 수행할 수 있는 저변을 확대하는 데 기여한다.
5.6. 확장/내장 가능 언어
5.6. 확장/내장 가능 언어
확장/내장 가능 언어는 호스트 응용 프로그램 내부에 통합되어 그 기능을 제어하거나 확장하는 데 사용되는 스크립팅 언어를 가리킨다. 이들은 응용 프로그램별로 고유하게 개발된 매크로 언어를 대체하는 보다 일반적인 대안으로 설계되었다. 응용 프로그램 개발자는 루아나 Tcl과 같은 범용 스크립팅 언어의 인터프리터를 자신의 소프트웨어에 내장함으로써, 처음부터 언어 번역기를 구현하는 부담을 덜고 사용자에게 이미 익숙한 기술을 활용할 수 있는 환경을 제공한다.
이러한 언어들은 호스트 응용 프로그램이 노출하는 API나 "후크"를 통해 응용 프로그램의 객체 모델이나 내부 함수에 접근하여 조작한다. 대표적인 예로, 자바스크립트는 웹 브라우저에 내장되어 DOM을 조작하는 데 사용되며, 어도비 애크러뱃에서는 PDF 문서 스크립팅에 활용된다. 파이썬은 블렌더나 시네마 4D와 같은 3D 그래픽 소프트웨어에서 강력한 확장 언어로 자리 잡았다.
내장 가능 언어의 사용은 게임 개발 분야에서도 두드러진다. 게임 엔진은 빠른 프로토타이핑과 런타임 중의 유연한 조정을 위해 스크립팅 언어를 도입한다. 이를 통해 게임 로직이나 NPC의 행동을 C++과 같은 저수준 언어로 전체 엔진을 다시 컴파일하지 않고도 수정할 수 있다. 루아는 가벼움과 빠른 실행 속도로 인해 《월드 오브 워크래프트》를 비롯한 많은 게임에서 확장 언어로 채택되었다.
이러한 접근 방식의 주요 장점은 생산성 향상과 접근성에 있다. 최종 사용자나 테크니컬 아티스트는 복잡한 시스템 프로그래밍 지식 없이도 응용 프로그램의 기능을 자동화하거나 새로운 도구를 만들 수 있다. 결과적으로 확장/내장 가능 언어는 소프트웨어를 더욱 개방적이고 사용자 정의 가능한 플랫폼으로 변모시키는 핵심 역할을 한다.
